package br.com.cicero.futebol.modelo.repositorios;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.com.cicero.futebol.modelo.entidades.Jogador;
import br.com.cicero.futebol.modelo.entidades.Time;

public class TimeRepository {
	
	private EntityManager em;
	
	public TimeRepository(EntityManager em) {
		
		this.em = em;
		
	}
	
	public void adiciona(Time time) {
		
		this.em.persist(time);
		
	}
	
	public void remove(Long id) {
		
		Time time = this.procura(id);
		Query query = this.em.createQuery("select j from Jogador j where j.time = :time");
		query.setParameter("time", time);
		List<Jogador> jogadores = query.getResultList();
		
		for (Jogador jogador : jogadores) {
			
			jogador.setTime(null);
			
		}
		
		this.em.remove(time);
		
	}
	
	public Time atualiza(Time time) {
		
		return this.em.merge(time);
		
	}

	public Time procura(Long id) {
		
		return this.em.find(Time.class, id);
		
	}
	
	public List<Time> getLista() {
		
		Query query = this.em.createQuery("select t from Time t");
		
		return query.getResultList();
		
	}
	

}
